;(async function () {
  const express = require('express')
  const formidableMiddleware = require('express-formidable')
  // 引入路由器中间件
  const adminRouter = require('./routes/admin')
  const loginRouter = require('./routes/login')
  const advRouter = require('./routes/adv')
  // 连接数据库,连接成功,再去开启服务器
  // 当前的connect就是连接数据库的promise
  const connect = require('./db/connect')

  //如果连接数据库成功了,才会执行await connect后面的代码
  await connect
  console.log('数据库连接成功')
  const app = express()

  // 响应静态资源的中间件
  app.use(express.static('public'))
  // 处理上传的post请求的url编码的数据

  // 注意: 处理文件的中间件和这两个中间件冲突,所以注释掉,只使用express-formidable这个就可以了
  // app.use(express.urlencoded({ extended: false }))
  // app.use(express.json())
  app.use(
    formidableMiddleware({
      uploadDir: './public/uploadDir', //上传的图片存储位置
      keepExtensions: true, // 保留上传图片的后缀名
    })
  )

  // 路由相关的中间件
  // 注意: 路由相关中间件,一定要写在其他中间件的下面
  app.use(adminRouter)
  app.use(loginRouter)
  app.use(advRouter)

  app.listen(5001, (err) => {
    if (err) console.log('服务器启动失败')
    else console.log('服务器启动成功')
  })
})()
